!==============Programa que mede a precisão da máquina=================

PROGRAM exec01

!======================================================================

IMPLICIT NONE

!=======================Variáveis do programa==========================
      
      REAL(4) :: prec_simples
      REAL(8) :: prec_dupla
      INTEGER :: I

!========================Inicializando variáves========================	
      
      I = 0 
      prec_simples = 0.0
      prec_dupla = 0.0d0

!==============Loop que vai determinar a precisão simples==============
     
      DO
            I = I + 1
            prec_simples = 1.0 + 2.0**(-I)
            IF (prec_simples == 1.0) THEN
                  EXIT
            END IF
      END DO
      WRITE(*,*) 'Precisão simples'
      WRITE(*,*) 'A MAQUINA ACHA QUE ', 1.0/2.0**I  ,' VALE ZERO'

!===============Loop que vai determinar a precisão dupla===============
     
      I = 0
      DO
            I = I + 1
            prec_dupla = 1.0d0 + 2.0d0**(-I)
            IF (prec_dupla == 1.0d0) THEN
                  EXIT
            END IF
      END DO
      WRITE(*,*) 'Precisão dupla'
      WRITE(*,*) 'A MAQUINA ACHA QUE ', 1.0d0/2.0d0**I, ' VALE ZERO'

!======================================================================      

END PROGRAM exec01
